<?php
// @function 公共控制器
namespace Admin\Controller;
use Think\Controller;
/**
* auth认证
*/
class CommonController extends Controller
{
	function _initialize() {
		//session不存在时，不允许直接访问
		if(!session('admin.id')){
			alertMes('请先登录','/admin/login');
		}
		$this->writelogs();
		//session存在时，不需要验证的权限
		$not_check = array('Index/index','Index/main');
		//当前操作的请求                 模块名/方法名
		if(in_array(CONTROLLER_NAME.'/'.ACTION_NAME, $not_check)){
			return true;
		}
		//超级管理员跳过验证
		if (session('admin.username')==C('ADMIN_AUTH_KEY')) {
			return true;
		}
		//下面代码动态判断权限
		$auth = new \Think\Auth();
		$rule_name = CONTROLLER_NAME.'/'.ACTION_NAME;
		$result = $auth->check($rule_name,session('admin.id'));
		if(!$result){
			alertMes('您没有权限访问','/admin/index/main');
		}
	}

	//操作日志
	function logs(){
		$list=array();
		//获取操作模块名、控制器名、方法名
		$m=MODULE_NAME;
		$c=CONTROLLER_NAME;
		$a=ACTION_NAME;
		$name=session('admin.username');
		$id=M("admin")->where("username='{$name}'")->getField("id");//获取管理员id
		$list['module']="admin";
		$list['action']=$c;//当前控制器名
		$list['querystring']="?m=".$m."&c=".$c."&a=".$a;//操作
		$list['username']=$name;
		$list['userid']=$id;
		$list['ip']=get_client_ip();//获取ip
		$list['time']=time();
		return $list;	
	}
	//写入日志
	function writelogs(){
		$data=$this->logs();
		$logs=M("admin_log")->add($data);
		if($logs==null){
			$this->error("操作日志记录失败");
		}
	}
}